package modele.coupSpecial;

import java.awt.Graphics2D;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.util.ArrayList;
import modele.Plateau;
import modele.case_.Case;
import outils.Outils;
import outils.gestionnairefichier.GestionnaireImage;
import vue.Camera;

/**
 * Représente un coup spécial qui attaque en ligne (rayon laser)
 *
 * @author zianechm
 */
public class TirDroit extends CoupSpecialAttaque {

	/**
	 * Crée un coup spécial Tir Droit
	 */
	public TirDroit() {
		super();
	}

	@Override
	public void dessiner(Graphics2D gr, Camera camera) {
		if (lanceur.getCase() != cible) {
			BufferedImage bi = GestionnaireImage.getInstance().get("src/donnees/images/DeathRay.png");
			int dx = cible.getX() - lanceur.getX();
			int dy = cible.getY() - lanceur.getY();
			double angle = Outils.theta(dx, dy);
			AffineTransform at = new AffineTransform();
			at.translate(lanceur.getX() * Plateau.TAILLE_CASE, lanceur.getY() * Plateau.TAILLE_CASE);
			at.translate(Plateau.TAILLE_CASE / 2, Plateau.TAILLE_CASE / 2);
			at.rotate(angle);
			at.translate(-bi.getWidth() / 2, -bi.getHeight() / 2);
			at.scale(400, 1);
			gr.drawImage(bi, at, null);
		}
	}

	@Override
	public ArrayList<Case> porteeCoupSpecial(Plateau p) {
		return Outils.demieDroite(lanceur.getCase(), cible, p);
	}
}
